/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package mygame;

import de.lessvoid.nifty.Nifty;
import de.lessvoid.nifty.elements.Element;
import de.lessvoid.nifty.elements.render.PanelRenderer;
import de.lessvoid.nifty.elements.render.TextRenderer;
import de.lessvoid.nifty.layout.align.HorizontalAlign;
import de.lessvoid.nifty.loaderv2.types.ElementType;
import de.lessvoid.nifty.loaderv2.types.TextType;
import de.lessvoid.nifty.screen.Screen;
import de.lessvoid.nifty.screen.ScreenController;
import de.lessvoid.nifty.spi.render.RenderFont;
import de.lessvoid.nifty.tools.Color;
import de.lessvoid.nifty.tools.SizeValue;

/**
 *
 * @author Paulo Júnior
 */
public class PersonagemStatus implements ScreenController {
    
    Main app;
    private Nifty nifty;
    private Personagem mPersonagem;
    private Element e;
    
    public PersonagemStatus(Main simpleApp, Nifty pNifty, Personagem pPersonagem) {
        app = simpleApp;
        nifty = pNifty;
        mPersonagem = pPersonagem;
    }
    
    public void bind(Nifty pNifty, Screen screen) {
        atualizaDados();
    }

    public void onStartScreen() {
        
    }

    public void onEndScreen() {
        
    }
    
    public void voltar() {
        nifty.exit();
        app.loadMenuPrincipal();
    }
    
    public String getNome()
    {
        return mPersonagem.getNome();
    }
    
    public String getExperiencia()
    {
        return mPersonagem.getExperiencia() + " / " + (int) Math.pow(mPersonagem.getLevel(), 2) * 10;
    }
    
    public String getLevel()
    {
        return String.valueOf(mPersonagem.getLevel());
    }

    public void atualizaPontos()
    {
        e = nifty.getCurrentScreen().findElementByName("text_pontos");
        e.getRenderer(TextRenderer.class).setText("Pontos: " + mPersonagem.getPontos());
    }
    
    public void atualizaForca()
    {
        e = nifty.getCurrentScreen().findElementByName("text_forca");
        e.getRenderer(TextRenderer.class).setText("Forca: " + mPersonagem.getForca());
        e = nifty.getCurrentScreen().findElementByName("text_forca_pontos");
        e.getRenderer(TextRenderer.class).setText("Pontos: " + 2*mPersonagem.getForca()/3);
    }
    
    public void atualizaAgilidade()
    {
        e = nifty.getCurrentScreen().findElementByName("text_agilidade");
        e.getRenderer(TextRenderer.class).setText("Agilidade: " + mPersonagem.getAgilidade());
        e = nifty.getCurrentScreen().findElementByName("text_agilidade_pontos");
        e.getRenderer(TextRenderer.class).setText("Pontos: " + 2*mPersonagem.getAgilidade()/3);
    }
    
    public void atualizaVigor()
    {
        e = nifty.getCurrentScreen().findElementByName("text_vigor");
        e.getRenderer(TextRenderer.class).setText("Vigor: " + mPersonagem.getVigor());
        e = nifty.getCurrentScreen().findElementByName("text_vigor_pontos");
        e.getRenderer(TextRenderer.class).setText("Pontos: " + 2*mPersonagem.getVigor()/3);
    }
    
    public void atualizaAtaque()
    {
        e = nifty.getCurrentScreen().findElementByName("text_ataque");
        e.getRenderer(TextRenderer.class).setText("Ataque: " + (mPersonagem.getForca() + mPersonagem.getAgilidade()) + " ~ " + (mPersonagem.getForca() + mPersonagem.getAgilidade())*5);
    }
    
    public void atualizaDefesa()
    {
        e = nifty.getCurrentScreen().findElementByName("text_defesa");
        e.getRenderer(TextRenderer.class).setText("Defesa: " + (mPersonagem.getForca() + mPersonagem.getVigor()) + " ~ " + (mPersonagem.getForca() + mPersonagem.getVigor())*3);
    }
    
    public void atualizaPrecisao()
    {
        e = nifty.getCurrentScreen().findElementByName("text_precisao");
        e.getRenderer(TextRenderer.class).setText("Precisao: " + mPersonagem.getAgilidade() + " ~ " + mPersonagem.getAgilidade()*5);
    }
    
    public void atualizaEsquiva()
    {
        e = nifty.getCurrentScreen().findElementByName("text_esquiva");
        e.getRenderer(TextRenderer.class).setText("Esquiva: " + mPersonagem.getAgilidade() + " ~ " + mPersonagem.getAgilidade()*3);
    }
    
    public void atualizaSangue()
    {
        e = nifty.getCurrentScreen().findElementByName("text_sangue");
        e.getRenderer(TextRenderer.class).setText("Sangue: " + mPersonagem.getSangue() + " / " + mPersonagem.getSangueAtual());
    }
    
    public void atualizaDados()
    {
        atualizaPontos();
        atualizaForca();
        atualizaAgilidade();
        atualizaVigor();
        atualizaAtaque();
        atualizaDefesa();
        atualizaPrecisao();
        atualizaEsquiva();
        atualizaSangue();
    }
    
    public void addForca()
    {
        if(mPersonagem.getPontos() >= 2*mPersonagem.getForca()/3){
            mPersonagem.addPontos(-2*mPersonagem.getForca()/3);
            mPersonagem.addForca(1);
            atualizaPontos();
            atualizaForca();
            atualizaAtaque();
            atualizaDefesa();
        }
    }
    
    public void addAgilidade()
    {
        if(mPersonagem.getPontos() >= 2*mPersonagem.getAgilidade()/3){
            mPersonagem.addPontos(-2*mPersonagem.getAgilidade()/3);
            mPersonagem.addAgilidade(1);
            atualizaPontos();
            atualizaAgilidade();
            atualizaAtaque();
            atualizaPrecisao();
            atualizaEsquiva();
        }
    }
    
    public void addVigor()
    {
        if(mPersonagem.getPontos() >= 2*mPersonagem.getVigor()/3){
            mPersonagem.addPontos(-2*mPersonagem.getVigor()/3);
            mPersonagem.addVigor(1);
            atualizaPontos();
            atualizaVigor();
            atualizaDefesa();
            atualizaSangue();
        }
    }
    
    public void addSangue()
    {
        if(mPersonagem.getPontos() > 0){
            mPersonagem.addPontos(-1);
            mPersonagem.addSangue(1);
            atualizaPontos();
            atualizaSangue();
        }
    }
}
